Binary Tree Preorder Traversal
Problem Description​
Given the root of a binary tree, return the preorder traversal of its nodes' values.
Examples​
Example 1:
Input: root = [1,null,2,3]
Output: [1,2,3]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [1]
Output: [1]
Constraints​
- The number of nodes in the tree is in the range .
Code in Different Languages​
- Python
- Java
- C++
 # Definition for a binary tree node.
class TreeNode:
 def __init__(self, val=0, left=None, right=None):
     self.val = val
     self.left = left
     self.right = right
class Solution:
 def preorderTraversal(self, root):
     if not root:
         return []
     result = []
     stack = [root]
     while stack:
         node = stack.pop()
         result.append(node.val)
         if node.right:
             stack.append(node.right)
         if node.left:
             stack.append(node.left)
     return result
 import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
// Definition for a binary tree node.
class TreeNode {
 int val;
 TreeNode left;
 TreeNode right;
 TreeNode(int x) { val = x; }
}
class Solution {
 public List<Integer> preorderTraversal(TreeNode root) {
     List<Integer> result = new ArrayList<>();
     if (root == null)
         return result;
     Stack<TreeNode> stack = new Stack<>();
     stack.push(root);
     while (!stack.isEmpty()) {
         TreeNode node = stack.pop();
         result.add(node.val);
         if (node.right != null)
             stack.push(node.right);
         if (node.left != null)
             stack.push(node.left);
     }
     return result;
 }
}
#include <vector>
#include <stack>
using namespace std;
// Definition for a binary tree node provided by the precompiled header.
struct TreeNode;
class Solution {
public:
 vector<int> preorderTraversal(TreeNode* root) {
     if (!root)
         return {};
     vector<int> result;
     stack<TreeNode*> s;
     s.push(root);
     while (!s.empty()) {
         TreeNode* node = s.top();
         s.pop();
         result.push_back(node->val);
         if (node->right)
             s.push(node->right);
         if (node->left)
             s.push(node->left);
     }
     return result;
 }
};
References​
- 
LeetCode Problem: Binary Tree Preorder Traversal 
- 
Solution Link: LeetCode Solution 
- 
Authors GeeksforGeeks Profile: Mahek Patel